import java.util.Date;
import java.util.Calendar;
/**
 * Stelt een comedy voor
 * 
 * @author Eric de Potter 
 * @version 7/5/2011
 */
public class Comedy extends Optreden
{
    private final String genre = "Comedy";
    private String show;
    private int length;

    /**
     * Maakt een comedy zonder beschrijving
     */
    public Comedy(String comic, String show, String startTime, int length, String stage)
    {
        super(App.convertToDate(startTime), "", stage, comic);
        this.show = show;
        this.length = length;
    }
    
    /**
     * Maakt een conedy met beschrijving
     */
    public Comedy(String comic, String show, String startTime, int length, String stage, String description)
    {
        super(App.convertToDate(startTime), description, stage, comic);
        this.show = show;
        this.length = length;
    }
    
    /**
     * @return het genre
     */
    public String getGenre()
    {
        return genre;
    }
    
    /**
     * @return   de stoptijd van het optreden.
     */
    public Date getStopDate()
    {
        return calculateStopDate(getStartDate(), length);
    }   

    /**
     * Berekent de stoptijd aan de hand van de starttijd en de lengte.
     * 
     * @param  startDate  de starttijd van de comedy
     * @param  length   de lengte van de comedy
     * @return     de stoptijd
     */
    private Date calculateStopDate(Date startDate, int length)
    {
        Date stopDate = startDate;
        Calendar stopCal = Calendar.getInstance();
        stopCal.setTime(stopDate);
        int minutes = 0;
        minutes += length;
        stopCal.add(Calendar.MINUTE,minutes);
        return stopCal.getTime();
    }
    
    /**
     * @return een volledige beschrijving van de comedy
     */
    public String toString()
    {
        Date starttijd = getStartDate();
        Date stoptijd = getStopDate();
        String returnString = genre + ": " + getTitle() + "-" + show + "\n";
           returnString += "Stage: " + getStage() + "\n";
           returnString += "Tijd: " + toDouble(starttijd.getHours()) + "u" + toDouble(starttijd.getMinutes());
           returnString += " - " + toDouble(stoptijd.getHours()) + "u" + toDouble(stoptijd.getMinutes()) + "\n";
           returnString += "Duur: " + length + " min" + "\n";
        if (getDescription().trim().length() == 0)
            returnString += "Geen beschrijving" + "\n";
        else
            returnString += getDescription() + "\n";
        return returnString;
    }
}
